# 静态方法
class Student:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def get_name(self):
        return self.name

    @staticmethod       # 静态方法装饰器
    def sum1(a,b):
        return a+b

    @classmethod        # 动态方法装饰器
    def get_info(cls,ss):
        """
        :param： cls和self是一个道理，都表示对象本身
        :param ss:
        :return:
        """
        print(f"我正在进行：{ss}活动！")

if __name__ == '__main__':
    # 通过Student类创建s1对象
    s1 = Student('张三',19,'男')
    # 调用getname方法
    print(s1.get_name())
    # 通过Student类来进行调用
    # Student.get_name()      # 需要传入对象才可以调用
    """
    静态方法：
    被标记的类方法就是一个普通方法
    跟外面的def定义没什么区别
    """
    # 通过类来进行调用
    # print(Student.sum1(10, 20))

    # 通过对象来进行调用
    # print(s1.sum1(10, 20))

    """
    动态方法装饰器classmethod：
    被标记的函数，类可以直接调用，无需传入对象
    """

    # 调用动态方法函数
    Student.get_info('学习')

    # 调用普通方法函数：没有标记classmethod，所以调用报错；类是没办法直接调用类方法的
    # Student.get_name()      # TypeError: get_name() missing 1 required positional argument: 'self'


